
// 导入数据库操作模块
const db = require('../db/index')
// 导入处理路径的 path 核心模块
const path = require("path")
const fs = require('fs')

// 获取用户分类列表数据的处理函数
exports.getWebsiteCategory = (req, res) => {
    // 根据分类的状态，获取所有未被删除的分类列表数据
// is_delete 为 0 表示没有被 标记为删除 的数据
// 获取用户id
const userId = req.params.userId;
const sql = 'select * from zc_website_category WHERE user_id = ?'



db.query(sql, [userId], (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.cc(err)
  
    // 2. 执行 SQL 语句成功
    res.send({
      status: 0,
      message: '获取用户分类列表成功！',
      data: results,
    })
  })
  

  }

  

exports.addWebsiteCategory = (req, res) => {
  // 获取用户id和分类名称
  const userId = req.params.userId;
  const name = req.body.name;

  // 查询用户的订阅类型
  const getSubscriptionTypeSql = 'SELECT subscription_type FROM zc_users WHERE id = ?';
  
  db.query(getSubscriptionTypeSql, [userId], (err, results) => {
    if (err) return res.cc(err);

    if (results.length === 0) return res.cc('用户不存在！');

    const subscriptionType = results[0].subscription_type;

    // 根据订阅类型设置分类限制
    const maxCategories = subscriptionType === 'paid' ? 99 : 3;

    // 查询当前用户已有分类数量
    const countCategoriesSql = 'SELECT COUNT(*) AS count FROM zc_website_category WHERE user_id = ?';
    
    db.query(countCategoriesSql, [userId], (err, results) => {
      if (err) return res.cc(err);

      const currentCategoryCount = results[0].count;

      if (currentCategoryCount >= maxCategories) {
        return res.cc(`已达到分类创建上限  ${maxCategories}个！`);
      }

      // 插入新分类
      const insertCategorySql = 'INSERT INTO zc_website_category (user_id, name) VALUES (?, ?)';
      
      db.query(insertCategorySql, [userId, name], (err, results) => {
        if (err) return res.cc(err);

        if (results.affectedRows !== 1) return res.cc('新增分类失败！');

        res.cc('新增分类成功！', 0);
      });
    });
  });
};


  
  // 删除文章分类的处理函数
// exports.deleteCategoryById = (req, res) => {
//   const id = req.params.id
//   const sql = `delete from zc_website_category where id = ?`
//   db.query(sql, [id], (err, results) => {
//     // 执行 SQL 语句失败
//     if (err) return res.cc(err)
  
//     // SQL 语句执行成功，但是影响行数不等于 1
//     if (results.affectedRows !== 1) return res.cc('删除分类失败！')
  
//     // 删除文章分类成功
//     res.cc('删除分类成功！', 0)
//   })
  

// }
exports.deleteCategoryById = (req, res) => {
  const  categoryId = req.params.id
	const sql = `SELECT logoImg FROM zc_website_all WHERE category_id = ?`
  db.query(sql, [categoryId], (err, results) => {
    // 执行 SQL 语句失败
		if (err) return res.cc(err)
   // 遍历所有图片路径并逐一删除图片文件
   for (const result of results) {
    
    console.log(results)
    const imagePath = result.logoImg
    if( imagePath && fs.existsSync(imagePath))  {
      fs.unlink(imagePath, (err) => {
        if (err) {
          console.error(err);
          return res.status(500).send('Server error');
        }
        console.log(`Deleted image: ${imagePath}`);
      });
    }
     
    
    // const imagePath = path.join('uploads', result.logoImg )
   
  }
    const sql = `delete from zc_website_category where id = ?`
  db.query(sql, [categoryId], (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err)
  
    // SQL 语句执行成功，但是影响行数不等于 1
    if (results.affectedRows !== 1) return res.cc('删除分类失败！')
  
    // 删除文章分类成功
    res.cc('删除分类成功！', 0)
  })
    
  }) 

}

// 根据 Id 获取文章分类的处理函数
exports.getCategoryById = (req, res) => {
  const sql = `select * from zc_website_category where id=?`
  db.query(sql, req.params.id, (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err)
  
    // SQL 语句执行成功，但是没有查询到任何数据
    if (results.length !== 1) return res.cc('获取分类数据失败！')
  
    // 把数据响应给客户端
    res.send({
      status: 0,
      message: '获取分类数据成功！',
      data: results[0],
    })
  })
  

}


// 更新分类的处理函数
exports.updateCategoryById = (req, res) => {
 // 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句
const sql = `select * from zc_website_category where id<>? and (name=?)`
// 执行查重操作
db.query(sql, [req.body.id, req.body.name,], (err, results) => {
  // 执行 SQL 语句失败
  if (err) return res.cc(err)

  // 判断 分类名称 和 分类别名 是否被占用
  // if (results.length === 2) return res.cc('分类名称与别名被占用，请更换后重试！')
  if (results.length === 1 && results[0].name === req.body.name) return res.cc('分类名称被占用，请更换后重试！')
  // if (results.length === 1 && results[0].alias === req.body.alias) return res.cc('分类别名被占用，请更换后重试！')

  // TODO：更新文章分类
  const sql = `update zc_website_category set ? where id=?`
  db.query(sql, [req.body, req.body.id], (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err)
  
    // SQL 语句执行成功，但是影响行数不等于 1
    if (results.affectedRows !== 1) return res.cc('更新分类失败！')
  
    // 更新文章分类成功
    res.cc('更新分类成功！', 0)
  })
  

})


}


// 新增分类的处理函数
// exports.addWebsiteCategory = (req, res) => {
   
//   // 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句
// const sql = `select * from zc_website_category where name=?`
// // 执行查重操作
// db.query(sql, [req.body.name], (err, results) => {
//   // 执行 SQL 语句失败
//   if (err) return res.cc(err)

//   // 判断 分类名称 和 分类别名 是否被占用
//   // if (results.length === 2) return res.cc('分类名称与别名被占用，请更换后重试！')
//   // 分别判断 分类名称 和 分类别名 是否被占用
//   if (results.length === 1 && results[0].name === req.body.name) return res.cc('分类名称被占用，请更换后重试！')
//   // if (results.length === 1 && results[0].alias === req.body.alias) return res.cc('分类别名被占用，请更换后重试！')

//   // TODO：新增分类
//   // 获取用户id和分类名称
//   const userId = req.params.userId;
//   const name = req.body.name;
//   // const sql = `insert into zc_website_category set ?`
//   const sql = `INSERT INTO zc_website_category (name, user_id) VALUES (?, ?)`
//   db.query(sql, [name, userId], (err, results) => {
//     // SQL 语句执行失败
//     if (err) return res.cc(err)
  
//     // SQL 语句执行成功，但是影响行数不等于 1
//     if (results.affectedRows !== 1) return res.cc('新增分类失败！')
  
//     // 新增文章分类成功
//     res.cc('新增分类成功！', 0)
//   }) 
// })
// }


// exports.addWebsiteCategory = (req, res) => {
   
//    // 获取用户id和分类名称
//    const userId = req.params.userId;
//    const name = req.body.name;
   
//    const sql = `INSERT INTO zc_website_category (user_id, name) VALUES (?, ?)`
//      db.query(sql, [userId, name], (err, results) => {
//     // SQL 语句执行失败
//     if (err) return res.cc(err)
  
//     // SQL 语句执行成功，但是影响行数不等于 1
//     if (results.affectedRows !== 1) return res.cc('新增分类失败！')
  
//     // 新增文章分类成功
//     res.cc('新增分类成功！', 0)
//   }) 
// }
